package org.jeecg.modules.demo.ch.Utils;/**
 * @author yxx
 * @create 2022-09-19 11:13
 */

import org.jeecg.modules.demo.ch.common.BigDecimalUtil;
import org.jeecg.modules.demo.ch.common.CommonMst;
import org.springframework.util.StringUtils;

import java.math.BigDecimal;
import java.util.ArrayList;

/**
 * @Description:TODO
 * @author:yxx
 * @date:2022年09月2022/9/19日11:13
 */
public class OrderBomUtils {

    /**
     * 去除多余的零
     *
     * @param str 包含"X"
     * @return
     */
    public static String eliminateRedundantZeros(String str) {
        //为空 或者 不含"X"
        if (!StringUtils.hasLength(str) || !str.contains(CommonMst.Data_Division_Constant.Division_Constant)) {
            return str;
        }
        ArrayList<String> lists = new ArrayList<>();
        String[] split = str.split(CommonMst.Data_Division_Constant.Division_Constant);
        for (String fStr : split) {
            String s = new BigDecimal(fStr).stripTrailingZeros().toPlainString();
            lists.add(s);
        }
        String join = org.apache.commons.lang3.StringUtils.join(lists.toArray(), CommonMst.Data_Division_Constant.Division_Constant);
        return join;
    }

    /**
     * 判断首字母是否是一个数字
     *
     * @param str
     * @return
     */
    public static Boolean FirstCharIsNumber(String str) {
        if (!StringUtils.hasLength(str)) {
            return false;
        }
        char b = str.charAt(0);
        if (b >= '0' & b <= '9') {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 数据向上取整
     *
     * @param str
     * @return
     */
    public static String DataRoundedUp(String str) {
        if (!StringUtils.hasLength(str) || !str.contains(CommonMst.Data_Division_Constant.Division_Constant)) {
            return str;
        }
        ArrayList<String> lists = new ArrayList<>();
        String[] split = str.split(CommonMst.Data_Division_Constant.Division_Constant);
        for (String fStr : split) {
            String s = new BigDecimal(fStr).stripTrailingZeros().toPlainString();
            double add = BigDecimalUtil.add(String.valueOf(Double.parseDouble(s)), "2");
            BigDecimal bigDecimal = new BigDecimal(add);
            String num = bigDecimal.setScale(0, BigDecimal.ROUND_UP).toString();//有小数点 进一
            lists.add(num);
        }
        String join = org.apache.commons.lang3.StringUtils.join(lists.toArray(), CommonMst.Data_Division_Constant.Division_Constant);
        return join;
    }

    /**
     * double数组的 降序排序
     */
    public static void orderNum(double[] nums) {

        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[i] < nums[j]) {
                    double n = nums[i];
                    nums[i] = nums[j];
                    nums[j] = n;
                }
            }
        }
    }

    /**
     * 给str不为空赋值
     */
    public static String setStringIfNotNull(Object object) {
        if (null == object){
            return "";
        }
        String str = String.valueOf(object);
        if (str.equals("null")){
            return "";
        }
        String strEnd = StringUtils.hasLength(str) ? str : "";
        return strEnd;
    }

    /**
     * 给int不为空赋值
     */
    public static Integer setIntegerIfNotNull(Object object) {
        if (null == object){
            return null;
        }
        String str = String.valueOf(object);
        return StringUtils.hasLength(str) ? (int)Double.parseDouble(str) : null;
    }

    /**
     * 给Double不为空赋值
     */
    public static Double setDoubleIfNotNull(Object object) {
        if (null == object){
            return null;
        }
        String str = String.valueOf(object);
        return StringUtils.hasLength(str) ? Double.parseDouble(str) : null;
    }


    /**
     * 针对小数进行补零
     * @return
     */
    public static String supplementZero(String str){
        if (!StringUtils.hasLength(str)){
            return str;
        }
        if (!str.contains(".")){
            return str;
        }
        if (str.charAt(0)=='.'){
            str="0"+str;
        }
        return str;
    }

    /**
     * 查看第一个数字索引，没有返回-1
     * @param str
     * @return
     */
    public static int indexOfFirstDigit(String str){
        for (int index = 0; index < str.length(); index++) {
            if (Character.isDigit(str.charAt(index))) {//check if the character is digit or not
                return index;//if yes return the index
            }
        }
        return -1;//If there are no digit then return -1 or a default result
    }

}
















